//
// Created by win10 on 2024/12/31.
//
#include<stdio.h>
#include<stdlib.h>
typedef struct node//二叉树的结点定义
{
    char data;
    struct node *lchild;
    struct node *rchild;
}BiNode, *BiTree;


// 先序建立二叉树 （输入时，按先序次序输入二叉树中结点的值,以 # 字符表示空树）
BiTree createBiTree()
{
    BiTree T;
    char c;
    scanf("%c", &c);
    if (c == '#')
        T = NULL;
    else
    {
        T = (BiTree)malloc(sizeof(BiNode));
        T->data = c;
        T->lchild = createBiTree();//先序创建左子树
        T->rchild = createBiTree();//先序创建右子树
    }

    return T;
}

// 递归方法求二叉树叶子节点个数
int Count_Leaf(BiTree T){
  if (T == NULL) return 0;
  if (T->lchild == NULL && T->rchild == NULL) return 1;
  return Count_Leaf(T->lchild) + Count_Leaf(T->rchild) + 1;
}
/*请在这里填写答案*/

int main(int argc, const char * argv[]) {

    BiTree T = createBiTree(); // 建立
    int num = Count_Leaf(T);
    printf("%d\n", num);
    return 0;
}
